/*
 * Copyright 2020 eBlocker Open Source UG (haftungsbeschraenkt)
 *
 * Licensed under the EUPL, Version 1.2 or - as soon they will be
 * approved by the European Commission - subsequent versions of the EUPL
 * (the "License"); You may not use this work except in compliance with
 * the License. You may obtain a copy of the License at:
 *
 *   https://joinup.ec.europa.eu/page/eupl-text-11-12
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
export default function TosService($http, $q, $sce, DataCachingService) {
    'ngInject';

    const PATH = '/api/adminconsole/tos';

    let tosCache;

    function loadTos() {
        tosCache = DataCachingService.loadCache(tosCache, PATH);
        return tosCache;
    }

    function getTos(langKey) {
        const tos = {};
        return loadTos().then(function success(response) {
            const tosContainer = response.data;
            if (angular.isObject(tosContainer)) {
                tos.licenseText = angular.isObject(tosContainer.text) ? $sce.trustAsHtml(tosContainer.text[langKey]) :
                    undefined;
                tos.licenseDate = angular.isString(tosContainer.date) ? Date.parse(tosContainer.date) : undefined;
                tos.licenseVersion = angular.isString(tosContainer.version) ? tosContainer.version : undefined;
            }
            return tos;
        });
    }

    function getTosHtml(langKey) {
        const tos = {};
        return loadTos().then(function success(response) {
            const tosContainer = response.data;
            if (angular.isObject(tosContainer)) {
                tos.licenseText = angular.isObject(tosContainer.text) ? tosContainer.text[langKey] : undefined;
                tos.licenseDate = angular.isString(tosContainer.date) ? Date.parse(tosContainer.date) : undefined;
                tos.licenseVersion = angular.isString(tosContainer.version) ? tosContainer.version : undefined;
            }
            return tos;
        });
    }

    return {
        getTos: getTos,
        getTosHtml: getTosHtml
    };
}
